home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 July & August / PCWorld_2006-07-08_cd.bin / komunikace / apache / apache_2[1].2.2-win32-x86-no_ssl.msi / Data1.cab / _19027E7487B15FE4B09C5878D49FE2DE < prev    next >
Text File  |  2005-02-04  |  5KB  |  159 lines

  1. /* Copyright 2000-2005 The Apache Software Foundation or its licensors, as
  2.  * applicable.
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *     http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16.  
  17. #ifndef APR_USER_H
  18. #define APR_USER_H
  19.  
  20. /**
  21.  * @file apr_user.h
  22.  * @brief APR User ID Services 
  23.  */
  24.  
  25. #include "apr.h"
  26. #include "apr_errno.h"
  27. #include "apr_pools.h"
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif /* __cplusplus */
  32.  
  33. /**
  34.  * @defgroup apr_user User and Group ID Services
  35.  * @ingroup APR 
  36.  * @{
  37.  */
  38.  
  39. /**
  40.  * Structure for determining user ownership.
  41.  */
  42. #ifdef WIN32
  43. typedef PSID                      apr_uid_t;
  44. #else
  45. typedef uid_t                     apr_uid_t;
  46. #endif
  47.  
  48. /**
  49.  * Structure for determining group ownership.
  50.  */
  51. #ifdef WIN32
  52. typedef PSID                      apr_gid_t;
  53. #else
  54. typedef gid_t                     apr_gid_t;
  55. #endif
  56.  
  57. #if APR_HAS_USER 
  58.  
  59. /**
  60.  * Get the userid (and groupid) of the calling process
  61.  * @param userid   Returns the user id
  62.  * @param groupid  Returns the user's group id
  63.  * @param p The pool from which to allocate working space
  64.  * @remark This function is available only if APR_HAS_USER is defined.
  65.  */
  66. APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *userid,
  67.                                           apr_gid_t *groupid,
  68.                                           apr_pool_t *p);
  69.  
  70. /**
  71.  * Get the user name for a specified userid
  72.  * @param username Pointer to new string containing user name (on output)
  73.  * @param userid The userid
  74.  * @param p The pool from which to allocate the string
  75.  * @remark This function is available only if APR_HAS_USER is defined.
  76.  */
  77. APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid,
  78.                                            apr_pool_t *p);
  79.  
  80. /**
  81.  * Get the userid (and groupid) for the specified username
  82.  * @param userid   Returns the user id
  83.  * @param groupid  Returns the user's group id
  84.  * @param username The username to lookup
  85.  * @param p The pool from which to allocate working space
  86.  * @remark This function is available only if APR_HAS_USER is defined.
  87.  */
  88. APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *userid, apr_gid_t *groupid,
  89.                                       const char *username, apr_pool_t *p);
  90.  
  91. /**
  92.  * Get the home directory for the named user
  93.  * @param dirname Pointer to new string containing directory name (on output)
  94.  * @param username The named user
  95.  * @param p The pool from which to allocate the string
  96.  * @remark This function is available only if APR_HAS_USER is defined.
  97.  */
  98. APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, 
  99.                                                const char *username, 
  100.                                                apr_pool_t *p);
  101.  
  102. /**
  103.  * Compare two user identifiers for equality.
  104.  * @param left One uid to test
  105.  * @param right Another uid to test
  106.  * @return APR_SUCCESS if the apr_uid_t strutures identify the same user,
  107.  * APR_EMISMATCH if not, APR_BADARG if an apr_uid_t is invalid.
  108.  * @remark This function is available only if APR_HAS_USER is defined.
  109.  */
  110. #if defined(WIN32)
  111. APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right);
  112. #else
  113. #define apr_uid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH)
  114. #endif
  115.  
  116. /**
  117.  * Get the group name for a specified groupid
  118.  * @param groupname Pointer to new string containing group name (on output)
  119.  * @param groupid The groupid
  120.  * @param p The pool from which to allocate the string
  121.  * @remark This function is available only if APR_HAS_USER is defined.
  122.  */
  123. APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, 
  124.                                              apr_gid_t groupid, apr_pool_t *p);
  125.  
  126. /**
  127.  * Get the groupid for a specified group name
  128.  * @param groupid Pointer to the group id (on output)
  129.  * @param groupname The group name to look up
  130.  * @param p The pool from which to allocate the string
  131.  * @remark This function is available only if APR_HAS_USER is defined.
  132.  */
  133. APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, 
  134.                                       const char *groupname, apr_pool_t *p);
  135.  
  136. /**
  137.  * Compare two group identifiers for equality.
  138.  * @param left One gid to test
  139.  * @param right Another gid to test
  140.  * @return APR_SUCCESS if the apr_gid_t strutures identify the same group,
  141.  * APR_EMISMATCH if not, APR_BADARG if an apr_gid_t is invalid.
  142.  * @remark This function is available only if APR_HAS_USER is defined.
  143.  */
  144. #if defined(WIN32)
  145. APR_DECLARE(apr_status_t) apr_gid_compare(apr_gid_t left, apr_gid_t right);
  146. #else
  147. #define apr_gid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH)
  148. #endif
  149.  
  150. #endif  /* ! APR_HAS_USER */
  151.  
  152. /** @} */
  153.  
  154. #ifdef __cplusplus
  155. }
  156. #endif
  157.  
  158. #endif  /* ! APR_USER_H */
  159.